import json

from pymilvus import MilvusClient

# 连接 Milvus
client = MilvusClient(
    uri="http://127.0.0.1:19530",
)  # 替换为你的 Milvus 地址

# 使用数据库：my_database_1
client.use_database(db_name="my_database_1")

collection_name = "demo_analyse"  # 替换为你的 Collection 名称

# 分页获取数据
page_size = 10  # 每页数据量
page_num = 1   # 当前页码

# 计算 offset
offset = (page_num - 1) * page_size

# 分页查询
# query() 方法（标量条件查询）
res = client.query(
    collection_name=collection_name,
    filter="",  # 可选：筛选条件，如 "id > 100"
    limit=page_size,
    offset=offset,
    output_fields=["article_id", "user_name", "title", "analyse"]  # 要返回的字段
)

print(f"Page {page_num}")

print('-' * 200)

# 转换为 JSON
# json_output = json.dumps(res, indent=2)  # indent 用于美化输出
# 使用 ensure_ascii=False，中文正常显示
json_output = json.dumps(res, indent=2, ensure_ascii=False)  # indent 用于美化输出
print(json_output)

# 方法 2：使用 search() + limit & offset（适用于向量搜索）
'''
from pymilvus import MilvusClient
import numpy as np

client = MilvusClient("http://localhost:19530")

collection_name = "your_collection"
query_vector = np.random.rand(768).tolist()  # 替换为你的查询向量
page_size = 10
page_num = 1

offset = (page_num - 1) * page_size

# 分页搜索
res = client.search(
    collection_name=collection_name,
    data=[query_vector],
    limit=page_size,
    offset=offset,
    output_fields=["id", "field1"]  # 返回的字段
)

print(f"Page {page_num} results:", res)
'''
# 方法 3：使用游标（Cursor）分页（适用于大数据集）
'''
last_id = None  # 记录上一页最后一条数据的 ID
page_size = 10

while True:
    filter_expr = f"id > {last_id}" if last_id else ""
    
    res = client.query(
        collection_name=collection_name,
        filter=filter_expr,
        limit=page_size,
        output_fields=["id", "field1"]
    )
    
    if not res:
        break  # 数据已全部加载
    
    print("Current page:", res)
    last_id = res[-1]["id"]  # 更新 last_id 为当前页最后一条数据的 ID
'''